package br.ufpe.cin.mac.middleware.connectors;

import br.ufpe.cin.mac.middleware.exceptions.InvalidOperationException;
import br.ufpe.cin.mac.util.Message;

public abstract class AbstractConnector extends Connector {

	public AbstractConnector(String connectorName, String compFrom,
			String compTo, String connConcrete) {
		super(connectorName, compFrom, compTo, connConcrete);
	}

	public void invC(final Message msg) {
		new Thread() {
			public void run() {
				try {
					msgManager(msg);
				} catch (InvalidOperationException e) {
					// TODO futuramente pode-se lan�ar uma caixa de di�logo aqui
					e.printStackTrace();
				}
			}
		}.start();
	}

	public Message invS(int hashMsg) {
		Message msg = this.invS.get(hashMsg);
		return msg;
	}

	public Message terC(int hashMsg) {
		return this.terC.get(hashMsg);
	}

	public void terS(final Message msg) {
		new Thread() {
			public void run() {
				try {
					
					msgManager(msg);
				} catch (InvalidOperationException e) {
					// TODO futuramente pode-se lan�ar uma caixa de di�logo aqui
					e.printStackTrace();
				}
			}
		}.start();

	}

	public void setConnectorName(String connectorName) {
		this.connectorName = connectorName;
	}

	protected abstract void msgManager(Message msg)
			throws InvalidOperationException;

}
